const myObj = {
	a: 1,
	b: [1, 2, {
			c: true
		},
		[3]
	],
	d: {
		e: 2,
		f: 3
	},
	g: null,
	like: [6, 8, 9]
}

function flatten(myObj) {
	let flatObj = {}
	let falg = null

	function formatKey(obj, keyName) {
		for (let key in obj) {
			if (Object(obj[key]) == obj[key]) { //obj[key]是引用数据类型
				if (!keyName) { //一开始不存在
					formatKey(obj[key], key) //递归
				} else { //存在
					if (Array.isArray(obj)) { //要格式化的obj为数组
						formatKey(obj[key], `${keyName}[${key}]`)
					} else { //要格式化的obj为对象
						formatKey(obj[key], `${keyName}.${key}`)
					}
				}
			} else { //obj[key]是基本数据类型
				if (!keyName) { //一开始不存在
					flatObj[key] = obj[key]
				} else {
					if (Array.isArray(obj)) { //要格式化的obj为数组
						flatObj[`${keyName}[${key}]`] = obj[key]
					} else { //要格式化的obj为对象
						flatObj[`${keyName}.${key}`] = obj[key]
					}
				}
			}
		}
	}
	formatKey(myObj, flag)
	return flatObj
}
flatten(myObj)